4.1 物联网基础概念

物联网连接层

我们先来介绍物联网的连接层,在介绍连接层基础上来介绍物联网感知层的相关技术,最后介绍传输和应用层的相关技术。

物联网中有不同的连接技术,除了传统的有线连接技术之外,我们在这里主要介绍无线连接的技术,包括WiFi技术、蓝牙技术包括BLE技术等、ZigBee技术、LoRa、SigFox,每一种技术的适用场景和特点也是不一样的。

为了介绍清楚无线传输的基础以及在上面发展出来的各种技术,我们先来介绍无线通信的基本原理。无线通信的基本思想就是利用无线电磁波或者无线信号来调制和传输信息。比如最简单的场景中,我们可以产生一个固定频率的无线信号,通过有信号来代表1,没有信号来代表0,来传输信号。由于产生和控制无线电磁型号需要比较复杂的过程,在几年前我在计划该课程的时候一直苦恼怎么让大家很直观的理解其中的技术,最好还能够实际动手试试。现在市面上有能够让我们进行信号处理的设备,但是我觉得还可以做得更直接更好,利用我们的智能手机就能完成这一系列工作。这一个课程中主要利用声波信号来模拟无线信号,声波信号可以很方便的产生,利用普通的智能手机就能够产生、发射和接收声波信号,同时声波信号也易于处理,很好的可视化,同时声波信号的处理和大部分无线信号的处理过程都比较类似,有利于我们理解无线处理的过程。本课程后面的材料中如果没有特殊声明,都讲会使用声波信号来模拟物联网连接过程中的各种技术,请同学们也自己动手来多尝试一下。

在介绍声波信号的处理之前,我们先来理解一下声波信号的基本特征。一般来说,人可以听到的声波范围大概为20Hz到20KHz中间,因此现在大部分手机声音采样率为44100,对应到能够处理的最大声音频率为22KHz左右。超过20KHz的声波我们经常叫做超声波。

声波的生成、发送和接收

这一部分对应了无线数据发送的时候的生成、发送和接收。在无线数据发送的过程中,这里每一部分都对应了很多的操作。我们先介绍声波的一些基本知识,然后通过声波的基本知识介绍数据发送和接收的过程。

对于一个最简单的声波信号,可以为一个简单的正弦信号,下图展示的一个频率为1KHz的正弦声波信号,大家可以将这段声音播放出来看看。为了产生这段声音,我们只需要在Matlab执行如下的操作并将文件保存下来就可以。

TODO 图 + Matlab代码

声音是一种机械波,有物体的震动引起了空气的震动,从而能够传播声音。因此出现了超声波洗龙虾、超声波洗牙。

关于Matlab的主要语法,有过任意编程语言经验的人应该都不会感觉到复杂,请大家自行学习。

日常生活中我们能看到的信号大部分都是模拟信号,我们能看到的风雨雷电,我们听到的声音,看到的图片等,要将这些信息存入到电脑中间,需要经过一系列的处理,其中有几个重要的步骤就是采样和量化。无线通信是无线电磁信号为基础的。我们在这一章节中为了方便理解,针对声音信号来进行研究。

模拟信号到数字信号

这是信号处理中的关键一步,因为网络通信尤其是无线通信的时候,利用的都是物理信号(如电磁信号),因此通信过程中的重要一步就是将模拟信号转成数字信号。

通信过程

如果真实存在着一个1KHz的声波信号,我们需要接收和处理这个信号的话,先要对信号进行采样和量化,这实际上也是所有计算机处理数据和信号的基础。计算机中将所有模拟信号转化为数字信号是通过采样和量化来实现的。具体来说,通过将模拟信号转化为电信号(通常为电压信号),然后通过将电压量化转成数字信号。在声音信号的处理中,我们首先依赖的是麦克风。麦克风能够将模拟的声音信号转化为电压信号,简单来说,麦克风上有一个可以随着声音振动而振动的薄膜,薄膜振动引起了产生电压的不断变化,因此电压的变化就代表了声音信号的变化。

麦克风原理

不过大家要注意的是,这个时候电压在时间和大小上依然是连续的,也就是说任意的电压值都是有可能的,很显然,这样大数据在电脑上是无法保存的,保存的大小是无穷大。为了保存这样的数据,我们先要对数据进行处理。第一个处理就是连续的信号转化为离散的信号。这一步是通过采样来实现的。采样是指计算机设备定时的对信号电压进行采集,采样解决了连续信号到离散信号的问题,可是采样后的电压值仍然没有办法直接保存,因为电压值在可能的取值范围内是连续的,为了解决这个问题,就需要量化。量化简单的来说就是将无限的连续的电压取值转化为有限的离散的电压取值,这样采样后的结果就能够保存。我们平时说的模拟/数字转换器(Analog to Digital Converter,即ADC,与之对应的是数/模转换器,即DAC)其实也就是干的这样的事情。

具体这个事情是怎么来实现的呢,我们首先通过简单的仿真实验来进行情况说明,然后我们再通过实际的信号让大家体会这一过程。假设存在一个正弦的声音信号,频率为5Hz,理想情况下这个信号是一个正弦波,这个信号在matlab下可以如下产生和画图出来。注意,matlab下产生的已经是离散的信号了。

%% 信号的产生过程
%% 产生一个频率为1000、时长为1s的信号;
t = 0:1/200:1; % 1s内2000个采样点
f = 5; % 频率f=1000
y = sin(2*pi*f*t);
plot(t, y);

信号时域图

注意这里面有几个小的问题,当我们将信号频率稍微做一些修改好,画出来的图将变成下面这个样子。

%% 信号的产生过程
%% 产生一个频率为100、时长为1s的信号;
t = 0:1/200:1; % 1s内150个采样点
f = 100; % 频率f=1000
y = sin(2*pi*f*t);
plot(t, y);

采样率不足

注意这个图已经完全不是我们想象中的正弦图像了,大家想想看看这个是什么原因。

这里面有几个很有趣的问题,是不是连续的信号就无法用离散的信号表示出来,连续的信号是不是就得用无穷多的离散信号来表达?这里牵涉到了信号采样中的一个重要问题,我们将这个问题更加具体化,假设信号中的最大频率为f,那么应该以多大的采样频率对信号进行采样合理呢,显然不可能无限大的采样频率,这样在计算机上无法处理,实际上也非常不经济。这个问题也就变为信号的频率为f,那么最少的采样频率为多少。

奈奎斯特采样定律告诉我们,对于这样的情形,需要的采样频率为2*f。采样过程所应遵循的规律,又称取样定理、抽样定理。采样定理说明采样频率与信号频谱之间的关系,是连续信号的基本依据。

我们来看一个更加有意思的例子,如果信号的采样频率设置得不对会怎么样?

%% 信号的产生过程
%% 信号的产生过程
%% 产生一个频率为100、时长为1s的信号;
t = 0:1/10000:1; % 1s内10000个采样点
f = 401; % 频率f=1000
y = sin(2*pi*f*t);
plot(t, y);

这个例子中,信号是400Hz的,理论上来说,信号是如下这个样子的。400Hz信号

%% 信号的产生过程
%% 产生一个频率为100、时长为1s的信号;
t = 0:1/402:1; % 1s内2000个采样点
f = 401; % 频率f=1000
y = sin(2*pi*f*t);
plot(t, y);

大家可以先来想象一下这个采样出来的结果会是怎么样的。

低采样频率

思考:

  1. 为什么会出现这样的结果。
  2. 如果频率为f,采样频率为fs,那么混叠后的频率将会是多少,这样会对通信产生什么影响。
  3. 用于演示混叠现象的经典例子之一是所谓的“车轮效应”。在影片里当马车越走越快时,马车车轮似乎越走越慢,然后甚至朝反方向运转。为什么?

量化

在数字信号处理领域,量化指将信号的连续取值(或者大量可能的离散取值)近似为有限多个(或较少的)离散值的过程。量化主要应用于从连续信号到数字信号的转换中。连续信号经过采样成为离散信号,离散信号经过量化即成为数字信号。注意离散信号通常情况下并不需要经过量化的过程,但可能在值域上并不离散,还是需要经过量化的过程 。信号的采样和量化通常都是由ADC实现的。

例如8位的ADC可以将标称输入电压范围内的模拟电压信号转换为8位的数字信号

思考: 多少位不同的电压值?

量化效果图

量化效果

The simplest way to quantize a signal is to choose the digital amplitude value closest to the original analog amplitude. This example shows the original analog signal (green), the quantized signal (black dots), the signal reconstructed from the quantized signal (yellow) and the difference between the original signal and the reconstructed signal (red). The difference between the original signal and the reconstructed signal is the quantization error and, in this simple quantization scheme, is a deterministic function of the input signal.

为了进一步说明这种四舍五入方法,这里以3 位(3 bit)的二进制数码进行量化的过程为例,如图4-9所示。

图4-9. 示意图

图4-9中,输入信号是一个模拟信号,采样点为A~L,幅值范围为0~9,采样值、量化和编码的结果如表4-3所示。

表4-3 采样值、 量化和编码的结果

https://baijiahao.baidu.com/s?id=1614627981206121506&wfr=spider&for=pc

可见量化的过程中,输出的信号和原信号是有一定的区别的,这个区别就是量化噪声。我们通常说的高保真,其中有一个重要步骤采取足够多的量化位数,保证量化噪声足够小,量化出来的信号足够接近原始信号,当然其中带来的代价就是存储和处理的开销变大。大家可以去网易音乐上看看高保真音乐的,他后面以后一个码率,这一个码率跟量化是直接相关的。思考:大家想想那个码率都跟什么因素相关。

按照量化级的划分方式分,有均匀量化和非均匀量化。

思考: 为什么有这两种量化的方式?

  • 均匀量化:ADC输入动态范围被均匀地划分为2^n份。

  • 非均匀量化:ADC输入动态范围的划分不均匀,一般用类似指数的曲线进行量化。

非均匀量化是针对均匀量化提出的,因为一般的语音信号中,绝大部分是小幅度的信号,且人耳听觉遵循指数规律。为了保证关心的信号能够被更精确的还原,我们应该将更多的bit用于表示小信号。

假设信号采用的是均匀量化的方法,量化噪声带来的信噪比变化,

思考

假设要将最大频率为8KHz的唱歌的信号转成数字信号,量化bit为8bit,则产生的信号码率至少是多少?1min的信号大小是多少?

到了这里,我们来看一个真实的采样和量化的例子,这也是我们整个数据处理实验的开始。这个实验在手机上就能实现,我们来看看手机上如何进行声音的采样和量化。

在做实验之前,你需要准备好一个手机(安卓和苹果手机都可以),并配置好基本的开发环境,如果你还不太熟悉,参见?。

img

安装好了之后,可以启动第一个声音记录的小程序。仔细看这个小程序,跟大家学习过的网络传输的过程是类似的,前面有一个ADC不断的将声音信号转化成为数字信号,这个数字信号是存储在一个buffer里面的,需要我们讲buffer中的数据不断的读取出来然后保存成声音信号。类似于网络中的数据处理,网卡有一个很重要的功能就是将物理信号转化为数字信号,然后也是需要我们将网络收到的数据从buffer中读取出来。事实上这一个例子也展示了大多数需要用到ADC转化的功能,数据被转换并且保存在一个buffer中,然后对buffer中的数据进行处理。当然进一步来看的话,这个buffer中的数据如何处理也是有不同的手段的,有一些是需要轮询,不断的取看buffer中是否有数据,有一些是基于中断,一旦有数据就会产生一个中断通知进行数据处理,这两种处理方法都可以实现非阻塞模式,即用户无需在这个地方等待buffer内容。还有一种是阻塞模式,用户需要等待buffer内容,当buffer中有数据时才能够继续往下处理。几种模式各有优缺点,这也是数据处理中,尤其是通信和与硬件打交道的数据处理中经常要面临的问题。如果数据处理不及时,数据就会被覆盖导致丢失,这个问题在网络传输中也会遇到。

这里面通过这一个小的程序我们想介绍几个概念,这也是平时大家在网络学习的过程中容易忽视的概念,因为网络学习中我们很难有机会从最底层开始接触到基础的信号处理。在启动录音的过程中,需要设置几个参数,第一个就是采样率,目前设置的是44100Hz,基本能够将人能听到的声音录下来。一个是量化的bit位数,这里设置的是16位,即每一个采样点用16bit来量化。另外一个是声道数量,目前选择的是双声道,即有两路数据。声音编码的格式采用的是PCM格式,这也是一种最基础的声音编码方法,与我们常见的mp3等格式不同,那些格式需要将声音文件进行进一步的编码。这个数据文件也是我们后面会要用到的数据的基础格式。

傅里叶变换

为了更加便于来分析一个信号,我们在介绍信号的更多属性前,我们先来介绍一下傅里叶变换。给定一个采样的信号,如何知道信号中的所有频率呢?傅里叶变化的一个最基本的作用就是建立数据时域和频域之间的一个转换关系。那么傅里叶变换是怎么得到的呢。我们先不看这么复杂的过程,先来看一个简单的例子。

思考: 那么2.4GHz信号是否需要4.8GHz的采样频率,也就是意味着1s之内有4.8GHz的数据?

线性时不变系统

前面的研究我们可以看出,正弦信号是具备很好的属性,我们都很熟悉,也很好处理的。可是实际中有一个问题,不是每一个信号都是正弦信号,那如何处理这些信号呢。研究中我们有一个方法,可以把一个未知的问题转化为已知的问题,那么一个很自然的想法就是,能不能将一个未知的不好处理的信号转化为已知的好处理的信号。

信道

信道又被称为通道、频道和波道,是信号在通信系统中传输的通道,由信号从发射端传输到接收端所经过的传输媒质所构成。广义的信道定义除了包括传输媒质,还包括传输信号的相关设备。

狭义信道,按照传输媒质来划分,可以分为有线信道、无线信道和存储信道三类。

(在某种意义上,磁带、磁盘等数据存储媒质也可以被看作是一种通信信道。将数据写入存储媒质的过程即等效于发射机将信号传输到信道的过程,将数据从存储媒质读出的过程即等效于接收机从信道接收信号的过程。)

广义信道,按照其功能进行划分,可以分为调制信道和编码信道两类。

调制信道是指信号从调制器的输出端传输到解调器的输入端经过的部分。对于调制和解调的研究者来说,信号在调制信道上经过的传输媒质和变换设备都对信号做出了某种形式的变换,研究者只关心这些变换的输入和输出的关系,并不关心实现这一系列变换的具体物理过程。这一系列变换的输入与输出之间的关系,通常用多端口时变网络作为调制信道的数学模型进行描述。

编码信道是指数字信号由编码器输出端传输到译码器输入端经过的部分。对于编译码的研究者来说,编码器输出的数字序列经过编码信道上的一系列变换之后,在译码器的输入端成为另一组数字序列,研究者只关心这两组数字序列之间的变换关系,而并不关心这一系列变换发生的具体物理过程,甚至并不关心信号在调制信道上的具体变化。编码器输出的数字序列与到译码器输入的数字序列之间的关系,通常用多端口网络的转移概率作为编码信道的数学模型进行描述。

https://zh.wikipedia.org/wiki/%E4%BF%A1%E9%81%93

信道冲击响应(Channel Impulse Response)

TODO 加个图

通信信道会对经过的信号产生作用(例如减弱,改变频率等),不同的信道作用效果不一样。

因为任何输入信号都可以分解成单位脉冲信号的线性叠加,研究信道对单位脉冲信号的响应是有意义的。信道冲击响应(Channel Impulse Response,CIR),顾名思义,即当输入一个单位脉冲信号时,信道输出端的响应输出信号。对于一个线性系统,输出信号可以用输出端对单位脉冲信号的响应的线性叠加表示。信道冲击响应反映了信道的基本特性。

因为物联网的主要通信技术为无线通信,下面介绍一些无线通信相关的基础观念。

信噪比

信噪比(Signal-to-noise ratio,SNR or S/N)用于衡量信号强度与背景噪声强度的关系,定义为信号功率与噪声功率之比。

SNR常使用分贝(dB)作为单位。

其中,$P{signal}$为信号功率,$P{noise}$为噪声功率,$A{signal}$为信号振幅,$A{noise}$为噪声振幅。

fs = 100; % sampling frequency
t = 0:1/fs:1;
x = sin(2*pi*4*t);
% Add white Gaussian noise to signal
% snr = 10dB
y = awgn(x, 10, 'measured');
plot(t, [x, y]);
legend('Original Signal', 'Signal with AWGN');

多径效应

由于电磁信号所处环境的不同,传播过程中出现折射、反射、漫射、衍射等等现象,在接收端收到了来自多条路径的信号,分为视距路径(Line of Sight)和非视距路径(Not Line of Sight)。多径效应对无线系统又很大影响,常用的解决技术有时域均衡、正交频分复用(OFDM)、Rake接收机、分集接收技术等。

https://en.wikipedia.org/wiki/Multipath_propagation#Interference

Zheng Yang, Zimu Zhou, and Yunhao Liu. 2013. From RSSI to CSI: Indoor localization via channel response. ACM Comput. Surv. 46, 2, Article 25 (December 2013), 32 pages. DOI: https://doi.org/10.1145/2543581.2543592

信号衰落

在无线通信领域,衰落是指由于信道的变化导致接收信号的幅度发生随机变化的现象,即信号衰落。导致信号衰落的信道被称作衰落信道。衰落可按时间、空间、频率,三个角度来分类。

时间

在时间上,分为慢衰落和快衰落。慢衰落描述的是信号幅度的长期变化,是传播环境在较长时间、较大范围内发生变化的结果,因此又被称为长期衰落、大尺度衰落。快衰落则描述了信号幅度的瞬时变化,与多径传播有关,又被称为短期衰落、小尺度衰落。慢衰落是快衰落的中值。

空间

在空间上,分为瑞利衰落和莱斯衰落。瑞利衰落适用于从发射机到接收机不存在直射信号的情况;相反,莱斯衰落适用于发射机到接收机存在直射路径的情况。

频率

在频率上,分为平坦性衰落和选择性衰落。相干带宽是描述时延扩展的指标,是表征多径信道特性的一个重要参数。它是指某一特定的频率范围,在该频率范围内的任意两个频率分量都具有很强的幅度相关性,即在相干带宽范围内,多径信道具有恒定的增益和线性相位。通常,相干带宽近似等于最大多径时延的倒数。从频域看,如果相干带宽小于发送信道的带宽,则该信道特性会导致接收信号波形产生频率选择性衰落,即某些频率成分信号的幅值可以增强,而另外一些频率成分信号的幅值会被削弱。当信号带宽远小于相干带宽时,所有的信号频率呈现出一样的强度衰落,称之为平坦性衰落。

TODO 加图

https://baike.baidu.com/item/%E7%9B%B8%E5%B9%B2%E5%B8%A6%E5%AE%BD

https://en.wikibooks.org/wiki/Communication_Systems/Fading_Channels#Flat_Fading

https://zh.wikipedia.org/wiki/%E8%A1%B0%E8%90%BD

CSI (Channel State Information)

在无线通信中,信道状态信息(Channel State Information,CSI)指一个通信链路的已知信道信息。CSI描述了一个信号如何从发送端传播到接收端以及相应影响,如散射、衰落和能量随距离的衰减,即信道估计。运用CSI可以依据当前信道状态实行自适应传输,这对多天线系统中实现高速率的可靠通信十分重要。

CSI可以分为瞬时CSI(Instantaneous CSI)和统计CSI(Statistical CSI)。瞬时CSI意味着当前信道状态已知,因此可以调整发射信号来优化接收信号以达到空间复用或减少比特错误率。统计CSI意味着信道的统计特性已知,如衰落分布的类型、平均信道增益、空间相关性等,这些信息也能用来进行传输优化。

在某些快衰落系统中,信道状态在symbol级别都会发生极速的变化,此时只用统计CSI是有意义的。另一方面,在慢衰落系统中,可以在合理精度内得到瞬时CSI估计,在该估计过时前仍可被用来进行传输适应。

TODO 举例

https://en.wikipedia.org/wiki/Channel_state_information

滤波器

在信号处理中,滤波器是去除信号中一些不需要的部分、特性的器件或过程。大多数时候,滤波器用于去除一些频率或频段。

分类

从不同角度我们可以对滤波器进行各种分类。下面是一些常见的分类。

  1. 按所处理的信号分为模拟滤波器和数字滤波器
  2. 按所通过信号的频段分为低通、高通、带通和带阻滤波器
    • 低通滤波器:它允许信号中的低频或直流分量通过,抑制高频分量或干扰和噪声。
    • 高通滤波器:它允许信号中的高频分量通过,抑制低频或直流分量。
    • 带通滤波器:它允许一定频段的信号通过,抑制低于或高于该频段的信号、干扰和噪声。
    • 带阻滤波器:它抑制一定频段内的信号,允许该频段以外的信号通过。
  3. 按所采用的元器件分为无源和有源滤波器
fs = 100; % sampling frequency
t = 0:1/fs:1;
x = sin(2*pi*4*t);
y = awgn(x, 10, 'measured'); % snr = 10dB

windowSize = 5; 
b = (1/windowSize)*ones(1,windowSize);
a = 1;
z = filter(b,a,y);

plot(t, [y; z]);
legend('Input Data','Filtered Data')

http://www.baike.com/wiki/%E6%BB%A4%E6%B3%A2%E5%99%A8

傅里叶变换

傅里叶(Fourier,1768~1830)年轻时是一个很出色的数学学者,但他专致于当一个军官。因为他是一个裁缝的儿子而被拒绝任命,他便转谋教士职位。当他曾经就读的军事学校委之以教授职位时他便接受了,同时数学就变成了他终生的爱好。像他同时代的其他科学家一样,傅里叶从事热流动的研究,作为实际问题,在工业上是为了处理金属,作为科学问题,是企图确定地球内部的温度。1822年,傅里叶发表了数学的经典文献之一,《热的解析理论》。在这本书中,他在分离变量法求解热传导方程的过程中发现初始条件的函数可以表示为三角级数。他有些不严谨又富于创造性地断言任意周期函数都可以展开为三角级数,更进一步的,他指出非周期函数的表示——不是成谐波关系的三角函数的加权和,而是不全成谐波关系的三角函数的加权积分,即傅里叶变换(在数学物理方程中,傅里叶变换也是用于求解热传导方程的经典方法)。

傅里叶变换(FT)

离散时间傅里叶变换(DTFT)

离散傅里叶变换(DFT)

快速傅里叶变换(FFT)

在20世纪60年代中期,一种称之为快速傅里叶变换(Fast Fourier Transform, FFT)的算法被引入,它是快速计算序列的离散傅里叶变换(DFT)或其逆变换的方法。这一算法在1965年被库利(Cooley)和图基(Tukey)独立地发现,其实它也有相当长的历史。事实上,这一算法在高斯的手稿中已能找到。之所以使得它成为重要的近代发现是由于FFT被证明是非常适合于高效的数字实现,并且它将计算变换所需要的时间减少了几个数量级。有了这一算法,在利用离散时间傅里叶级数和变换中许多有趣而过去认为不切实际的想法突然变得实际起来,并且使离散时间信号于系统分析技术的发展加速向前迈进。

傅里叶分析将信号从原始域(通常是时间或空间)转换到頻域的表示或者逆过来转换。FFT会通过把DFT矩阵分解为稀疏(大多为零)因子之积来快速计算此类变换。因此,它能够将计算DFT的复杂度从只用DFT定义计算需要的 $O(n^{2})$,降低到 $O(n\log n)$,其中 $n$ 为数据大小。

快速傅里叶变换广泛的应用于工程、科学和数学领域。这里的基本思想在1965年才得到普及,但早在1805年就已推导出来。1994年美国数学家吉尔伯特·斯特朗把FFT描述为“我们一生中最重要的数值算法”,它还被IEEE科学与工程计算期刊列入20世纪十大算法。

https://zh.wikipedia.org/wiki/%E5%BF%AB%E9%80%9F%E5%82%85%E9%87%8C%E5%8F%B6%E5%8F%98%E6%8D%A2

TODO 代码

《古今数学思想(第三册)》第28章

《信号与系统(第二版)》第3、4、5章

https://en.wikipedia.org/wiki/Fourier_transform


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。

文章标题:4.1 物联网基础概念

文章字数:7.6k

本文作者:WiSys Lab

发布时间:2019-07-02, 15:41:32

最后更新:2019-07-15, 16:47:13

原始链接:http://yoursite.com/2019/07/02/4.1 无线网络基础概念/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录